package com.base.cn.platform.os.dao.op.coupon;


import com.base.cn.platform.os.common.mybatis.BaseDao;
import com.base.cn.platform.os.entity.op.coupon.OpCoupon;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 优惠券Dao
 * Created by ll on 2017/7/14 0014.
 */
@Mapper
public interface OpCouponDao extends BaseDao<OpCoupon> {

    /**
     * 获取课程详情可以领取的优惠券列表
     * @param clazz
     * @param params 查询参数
     * @return List<OpCoupon>
     */
    List<OpCoupon> getCourseCouponList(@Param("clazz") Class<OpCoupon> clazz,
                                       @Param("params") Map<String,Object> params);

    /**
     * 查询定向发放、针对用户、且是全部用户的，并且未领取过的优惠券列表
     * @param clazz
     * @param userId 用户ID
     * @return List<OpCoupon>
     */
    List<OpCoupon> findAllUserReceiveCouponList(@Param("clazz") Class<OpCoupon> clazz,
                                                @Param("userId") BigDecimal userId);

    /**
     * 查询定向发放、针对用户、且是部分购买过指定商品的用户，并且未领取过的优惠券列表
     * @param clazz
     * @param userId 用户ID
     * @return List<OpCoupon>
     */
    List<OpCoupon> findPartPayShopUserReceiveCouponList(@Param("clazz") Class<OpCoupon> clazz,
                                                @Param("userId") BigDecimal userId);
}
